

//存放c2c或者群信息（c2c用户：c2c用户id，昵称，头像；群：群id，群名称，群头像）
var infoMap = {}; //初始化时，可以先拉取我的好友和我的群组信息
var face=0,nick;
//我的最近联系人
var getRecentContactList = function () {
   // initGetRecentContactListTable([]);
    var options = {
        'Count': 100//最近的会话数
    };
    webim.getRecentContactList(
        options,
        function (resp) {
            //console.error(resp.SessionItem);
           // return
            var data = [];
            var tempSess,tempSessMap={};//临时会话变量
            if (resp.SessionItem && resp.SessionItem.length > 0) {

                for (var i in resp.SessionItem) {
                    var item = resp.SessionItem[i];
                    var type = item.Type;//接口返回的会话类型
                    var sessType,typeZh, sessionId, sessionNick='', sessionImage='', senderId='', senderNick='';
                    if (type == webim.RECENT_CONTACT_TYPE.C2C) {//私聊
                        typeZh = '私聊';
                        sessType=webim.SESSION_TYPE.C2C;//设置会话类型
                        sessionId = item.To_Account;//会话id，私聊时为好友ID或者系统账号（值为@TIM#SYSTEM，业务可以自己决定是否需要展示），注意：从To_Account获取,

                        if(sessionId=='@TIM#SYSTEM'){//先过滤系统消息，，
                            webim.Log.warn('过滤好友系统消息,sessionId='+sessionId);
                            continue;
                        }
                        var key=sessType+"_"+sessionId;
                        var c2cInfo=infoMap[key];
                        if (c2cInfo && c2cInfo.name) {//从infoMap获取c2c昵称
                            sessionNick = c2cInfo.name;//会话昵称，私聊时为好友昵称，接口暂不支持返回，需要业务自己获取（前提是用户设置过自己的昵称，通过拉取好友资料接口（支持批量拉取）得到）
                        }else{//没有找到或者没有设置过
                            sessionNick = sessionId;//会话昵称，如果昵称为空，默认将其设成会话id
                        }
                        if (c2cInfo && c2cInfo.image) {//从infoMap获取c2c头像
                            sessionImage = c2cInfo.image;//会话头像，私聊时为好友头像，接口暂不支持返回，需要业务自己获取（前提是用户设置过自己的昵称，通过拉取好友资料接口（支持批量拉取）得到）
                        }else{//没有找到或者没有设置过
                            sessionImage = 44//会话头像，如果为空，默认将其设置demo自带的头像
                        }
                        senderId=senderNick='';//私聊时，这些字段用不到，直接设置为空

                    } else if (type == webim.RECENT_CONTACT_TYPE.GROUP) {//群聊
                        typeZh = '群聊';
                        sessType=webim.SESSION_TYPE.GROUP;//设置会话类型
                        sessionId = item.ToAccount;//会话id，群聊时为群ID，注意：从ToAccount获取
                        sessionNick = item.GroupNick;//会话昵称，群聊时，为群名称，接口一定会返回

                        if (item.GroupImage) {//优先考虑接口返回的群头像
                            sessionImage = item.GroupImage;//会话头像，群聊时，群头像，如果业务设置过群头像（设置群头像请参考wiki文档-设置群资料接口），接口会返回
                        } else {//接口没有返回或者没有设置过群头像，再从infoMap获取群头像
                            var key=sessType+"_"+sessionId;
                            var groupInfo=infoMap[key];
                            if(groupInfo && groupInfo.image){//
                                sessionImage = groupInfo.image
                            }else{//不存在或者没有设置过，则使用默认头像
                                sessionImage = groupHeadUrl;//会话头像，如果没有设置过群头像，默认将其设置demo自带的头像
                            }
                        }
                        senderId = item.MsgGroupFrom_Account;//群消息的发送者id

                        if(!senderId){//发送者id为空
                            webim.Log.warn('群消息发送者id为空,senderId='+senderId+",groupid="+sessionId);
                            continue;
                        }
                        if(senderId=='@TIM#SYSTEM'){//先过滤群系统消息，因为接口暂时区分不了是进群还是退群等提示消息，
                            webim.Log.warn('过滤群系统消息,senderId='+senderId+",groupid="+sessionId);
                            continue;
                        }

                        senderNick=item.MsgGroupFromCardName;//优先考虑群成员名片
                        if(!senderNick){//如果没有设置群成员名片
                            senderNick = item.MsgGroupFromNickName;//再考虑接口是否返回了群成员昵称
                            if(!senderNick){//如果接口没有返回昵称或者没有设置群昵称，从infoMap获取昵称
                                var key=webim.SESSION_TYPE.C2C+"_"+senderId;
                                var c2cInfo=infoMap[key];
                                if (c2cInfo && c2cInfo.name) {
                                    senderNick = c2cInfo.name;//发送者群昵称
                                }else{
                                    sessionNick = senderId;//如果昵称为空，默认将其设成发送者id
                                }
                            }
                        }

                    } else {
                        typeZh = '未知类型';
                        sessionId = item.ToAccount;//
                    }

                    if(!sessionId){//会话id为空
                        webim.Log.warn('会话id为空,sessionId='+sessionId);
                        continue;
                    }

                    if(sessionId=='@TLS#NOT_FOUND'){//会话id不存在，可能是已经被删除了
                        webim.Log.warn('会话id不存在,sessionId='+sessionId);
                        continue;
                    }

                    if (sessionNick.length > 10) {//帐号或昵称过长，截取一部分，出于demo需要，业务可以自己决定
                        sessionNick = sessionNick.substr(0, maxNameLen) + "...";
                    }

                    tempSess=tempSessMap[sessType+"_"+sessionId];
                    if(!tempSess){//先判断是否存在（用于去重），不存在增加一个
                        console.error(item.UnreadMsgCount);
                        tempSessMap[sessType+"_"+sessionId]=true;
                        data.push({
                            SessionType: sessType,//会话类型
                            SessionTypeZh: typeZh,//会话类型中文
                            SessionId: webim.Tool.formatText2Html(sessionId),//会话id
                            SessionNick: webim.Tool.formatText2Html(sessionNick),//会话昵称
                            SessionImage: sessionImage,//会话头像
                            C2cAccount: webim.Tool.formatText2Html(senderId),//发送者id
                            C2cNick: webim.Tool.formatText2Html(senderNick),//发送者昵称
                            UnreadMsgCount: item.UnreadMsgCount,//未读消息数
                            MsgSeq: item.MsgSeq,//消息seq
                            MsgRandom: item.MsgRandom,//消息随机数
                            MsgTimeStamp: webim.Tool.formatTimeStamp(item.MsgTimeStamp),//消息时间戳
                            MsgShow: item.MsgShow//消息内容

                           
                        });
                    }
                }
            }
            console.error(data);
        },
        function (err) {
            alert(err.ErrorInfo);
        }
    );
};
var recentSessMap = []; //保存最近会话列表
//初始化聊天界面左侧最近会话列表
var initRecentContactList = function (cbOK, cbErr) {
    var options = {
        'Count': 100//要拉取的最近会话条数
    };
    webim.getRecentContactList(
        options,
        function (resp) {
            console.error(resp)
            // console.error(resp.SessionItem);
            // return
            var tempSess;//临时会话变量
            //sessList.innerHTML = "";
            if (resp.SessionItem && resp.SessionItem.length > 0) {//如果存在最近会话记录

                for (var i in resp.SessionItem) {
                    var item = resp.SessionItem[i];
                    var type = item.Type;//接口返回的会话类型
                    var sessType,typeZh, sessionId, sessionNick='', sessionImage='', senderId='', senderNick='';
                    if (type == webim.RECENT_CONTACT_TYPE.C2C) {//私聊
                        typeZh = '私聊';
                        sessType=webim.SESSION_TYPE.C2C;//设置会话类型
                        sessionId = item.To_Account;//会话id，私聊时为好友ID或者系统账号（值为@TIM#SYSTEM，业务可以自己决定是否需要展示），注意：从To_Account获取,
                        
                        var key=sessType+"_"+sessionId;
                        var c2cInfo=infoMap[key];
                        if (c2cInfo && c2cInfo.name) {//从infoMap获取c2c昵称
                            sessionNick = c2cInfo.name;//会话昵称，私聊时为好友昵称，接口暂不支持返回，需要业务自己获取（前提是用户设置过自己的昵称，通过拉取好友资料接口（支持批量拉取）得到）
                        }else{//没有找到或者没有设置过
                            sessionNick = '游客';//会话昵称，如果昵称为空，默认将其设成会话id
                        }
                        if (c2cInfo && c2cInfo.image) {//从infoMap获取c2c头像
                            sessionImage = c2cInfo.image;//会话头像，私聊时为好友头像，接口暂不支持返回，需要业务自己获取（前提是用户设置过自己的昵称，通过拉取好友资料接口（支持批量拉取）得到）
                        }else{//没有找到或者没有设置过
                            sessionImage = 'https://img2.woyaogexing.com/2018/02/27/2075c8217f25258e!200x200.jpg';//会话头像，如果为空，默认将其设置demo自带的头像
                        }
                        senderId=senderNick='';//私聊时，这些字段用不到，直接设置为空
                    } 
                    

                    if(sessionId=='@TLS#NOT_FOUND'){//会话id不存在，可能是已经被删除了
                        webim.Log.warn('会话id不存在,sessionId='+sessionId);
                        continue;
                    }

                    if (sessionNick.length > 10) {//帐号或昵称过长，截取一部分，出于demo需要，业务可以自己决定
                        sessionNick = sessionNick.substr(0, maxNameLen) + "...";
                    }
                    
                    tempSess=recentSessMap[sessionId];
                    if(!tempSess){//先判断是否存在（用于去重），不存在增加一个
                       
                        var tmp = {
                            SessionId: sessionId,//会话对象id，好友id或者群id
                            SessionNick: sessionNick,//会话昵称，好友昵称或群名称
                            SessionImage:sessionImage,//会话头像，好友头像或者群头像
                            MsgTimeStamp:webim.Tool.formatTimeStamp(item.MsgTimeStamp),//消息时间戳
                            MsgShow: item.MsgShow,//消息内容,文本消息为原内容，表情消息为[表情],其他类型消息以此类推
                            unread : 0,
           

                        };
                         
                        recentSessMap.push(tmp);

                    }

                }
                webim.syncMsgs(initUnreadMsgCount);//初始化最近会话的消息未读数

                if (cbOK)//回调
                    cbOK();

            }

        },
        cbErr
    );
};


